/**
 * Created by CodeTlan.
 * User: hellreuter
 * Date: 3/20/12
 * Time: 1:18 AM
 */
Ext.define('CT.controller.Trabajadores', {
    extend: 'Ext.app.Controller',
    views:[
        'trabajador.Window',
        'trabajador.Grid',
        'trabajador.Form',
        'trabajador.AddDepWindow',
        'trabajador.AddDepGrid'
    ],
    stores:[
        'Trabajadores',
        'AddDepartamentos'
    ],
    models:[
        'Trabajador',
        'AddDepartamento'
    ],
    requires: [
        'Ctc.view.ComboPaging',
        'CT.view.departamento.Combo',
        'CT.view.secretario.Combo',
        'CT.view.delegado.Combo'
    ],
    win: false,
    winadddep: false,
    init: function(){
        this.control({
            'formtrabajador button[action=add]':{
                click: this.agregar
            },
            'gridtrabajador':{
                edit: this.editar,
                beforeedit:this.setCombo,
                cellclick: this.clicked
            },
            'gridtrabajador button[action=addDepartamento]':{
                click: this.agregarDepartamentos
            },
            'gridtrabajador checkcolumn':{
                checkchange: this.activar
            },
            'gridadddep button[action=insertDep]':{
                click: this.insertarDepartamento
            },
            'gridadddep combodepartamentos':{
                change: this.cambio
            },
            'gridadddep':{
                cellclick: this.addDepClicked
            }
        });
    },
    lanzarVentana:function(anim, icon){
        if(!this.win){
            this.init();
            this.win=Ext.widget('wintrabajadores',{animateTarget:anim,iconCls:icon});
        }
        this.win.show();
    },
    clicked:function(grid, cell, index, record){
        grid.panel.down('#btnDepartamentos').enable();
        switch(index){
            case 7: this.eliminar(grid,record.data);break;
        }
    },
    agregar: function(button){
        var form = button.up('form').getForm();
        var store = this.getTrabajadoresStore();
        if(form.isValid()){
            form.submit({
                url: 'index.php/trabajadores/add',
                success: function(){
                    form.reset();
                    Notification.ok('Trabajador Agregado',' ');
                    store.load();
                },
                failure: function(){
                    Notification.error('El número de ficha ya existe',' ');
                }
            });
        }
    },
    editar:function(editor, e){

        if(e.colIdx==4){
            var store = e.column.getEditor().store;
            var ind = store.findExact('delegado',e.value);
            var delegado_k = store.getAt(ind).data.delegado_k;
            var mods='{"delegado_k" : "'+delegado_k+'"}';
        }
        else if (e.colIdx==5){
            var store = e.column.getEditor().store;
            var ind = store.findExact('secretario',e.value);
            var secretario_k = store.getAt(ind).data.secretario_k;
            var mods='{"secretario_k" : "'+secretario_k+'"}';
        }
        else{
            var mods='{"'+e.field+'":"'+e.value+'"}';
        }

        Ext.Ajax.request({
            url: 'index.php/trabajadores/edit',
            params: {
                mod: mods,
                trabajador_k:e.record.data.trabajador_k
            },
            success: function(response){
                e.record.commit();
                Notification.ok('Trabajador Modificado',' ');
            }
        });
    },
    activar: function(check, index, activo){
        var store = this.getTrabajadoresStore();
        var record = store.getAt(index);
        Ext.Ajax.request({
            url: 'index.php/trabajadores/active',
            params: {
                trabajador_k: record.data.trabajador_k,
                activo: activo?1:0
            },
            success: function(response){
                record.commit();
                Notification.ok('Trabajador Modificado', ' ');
            }
        });
    },
    setCombo:function(editor, e){
        setTimeout(function(){
            if(editor.colIdx==4){
                var field=editor.column.getEditor();
                field.setRawValue(editor.record.data.delegado);
                if(Ext.isEmpty(field.store.getTotalCount()))
                    field.store.load();
            }
            if(editor.colIdx==5){
                var field=editor.column.getEditor();
                field.setRawValue(editor.record.data.secretario);
                if(Ext.isEmpty(field.store.getTotalCount()))
                    field.store.load();
            }
        },100);
    },
    agregarDepartamentos:function(button){
            var objeto = button.up("grid").getSelectionModel().getSelection();
            var trabajador = objeto[0].data.trabajador_k;
            var datos = objeto[0].data.ficha+' | '+objeto[0].data.nombre+' '+objeto[0].data.apellidos;
            this.winadddep=Ext.widget('winadddep',{iconCls:'departamentos',trabajador_k:trabajador,title:'Agregar departamentos: '+datos, modal: 'true'});
            this.winadddep.show();
    },
    insertarDepartamento:function(button){
        var trabajador = button.up('grid').trabajador_k;
        var departamento = button.up('grid').dockedItems.items[2].items.items[1].value;  //Se obtiene valor del ComboBox
        var store = button.up('grid').getStore();
        Ext.Ajax.request({
            url: 'index.php/adddepartamentos/add',
            params: {
                trabajador_k: trabajador,
                departamento_k: departamento
            },
            success: function(response){
                store.load();
                Notification.ok('Departamento Agregado', ' ');
            }
        });
    },
    cambio:function(grid){
        var a = grid.up().down('#btnAddDepartamentos').enable();
    },
    addDepClicked:function(grid, cell, index, record){
        switch(index){
            case 2:this.addDepEliminar(grid,record.data);break;
        }
    },
    addDepEliminar:function(grid,record){
        Ext.Msg.confirm('Acción requerida','Está seguro que desea eliminar el Departamento al Trabajador?',function(r){
            if(r=="yes"){
                var store=this.getAddDepartamentosStore();
                Ext.Ajax.request({
                    url: 'index.php/adddepartamentos/delete',
                    params: {
                        trabajador_departamento_k: record.trabajador_departamento_k
                    },
                    success: function(response){
                        var sm = grid.getSelectionModel();
                        store.remove(sm.getSelection());

                        Notification.ok('Departamento Eliminado',' ');
                    }
                });
            }
        },this);
    },
    eliminar:function(grid,record){
        Ext.Msg.confirm('Acción requerida','Está seguro que desea eliminar el trabajador: '+record.nombre+'?',function(r){
            if(r=="yes"){
                var store=this.getTrabajadoresStore();
                Ext.Ajax.request({
                    url: 'index.php/trabajadores/delete',
                    params: {
                        trabajador_k: record.trabajador_k
                    },
                    success: function(response){
                        var sm = grid.getSelectionModel();
                        store.remove(sm.getSelection());
                        Notification.ok('Trabajador Eliminado',' ');
                    }
                });
            }
        },this);
    }
});